package com.hzlj.position.locate.common.dto.position;

import cn.hutool.core.util.ObjectUtil;
import com.hzlj.position.config.common.dto.common.PositionAddExtDTO;
import com.hzlj.position.locate.common.common.PositionSimpleDTO;
import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author lifh
 * @date 2023/3/16 12:54
 **/
@Data
@Accessors(chain = true)
public class PositionExtDTO extends PositionAddExtDTO {
    /**
     * 外出ID(请假、跨市县)
     */
    private String leaveId;
    /**
     * 外出类型
     */
    private String leaveType;
    /**
     * 外出:开始日期
     */
    private String leaveKsRq;
    /**
     * 外出:结束日期
     */
    private String leaveJsRq;
    /**
     * 外出：边界IDS，多个用,隔开
     */
    private String leaveMddXzqhIds;
    /**
     * 外出：边界名称，多个用,隔开
     */
    private String leaveMddXzqhMcs;
    /**
     * 是否在强制措施中
     */
    private Boolean qzcs;
    /**
     * 目前配置的可越界距离
     */
    private BigDecimal crossDistance;
    /**
     * 允许区域边界，多个使用英文‘,’分割(xzqh)
     */
    private String allowXzqhIds;
    /**
     * 禁止区域边界，多个使用英文‘,’分割(xzqh)
     */
    private String forbitXzqhIds;
    /**
     * 纠偏配置ID(position_correct_config)
     */
    private String correctConfigId;
    /**
     * 被纠偏位置,json-PositionSimpleDTO
     */
    private PositionSimpleDTO correctOriginalPosition;
    /**
     * 上报位置-自动纠偏,如果是自动纠偏则为空
     */
    private PositionSimpleDTO correctReportPosition;
    /**
     * 纠偏后的位置(包含自动纠偏)
     */
    private PositionSimpleDTO correctPosition;
    /**
     * 上报位置-位置确认
     */
    private PositionSimpleDTO trackCheckReportPosition;
    /**
     * 同步时间
     */
    private Date syncTime;
    /**
     * 同步描述
     */
    private String syncMsg;


    /**
     * 判断所有属性是不是空的，如果属性，务必添加修改此方法
     */
    public boolean checkNull() {
        return ObjectUtil.isEmpty(super.getElectricValue())
                && ObjectUtil.isEmpty(super.getTimePeriod())
                && ObjectUtil.isEmpty(super.getVirtualTool())
                && ObjectUtil.isEmpty(super.getFileIds())
                && ObjectUtil.isEmpty(leaveId)
                && ObjectUtil.isEmpty(leaveType)
                && ObjectUtil.isEmpty(leaveKsRq)
                && ObjectUtil.isEmpty(leaveJsRq)
                && ObjectUtil.isEmpty(leaveMddXzqhIds)
                && ObjectUtil.isEmpty(leaveMddXzqhMcs)
                && ObjectUtil.isEmpty(crossDistance)
                && ObjectUtil.isEmpty(allowXzqhIds)
                && ObjectUtil.isEmpty(forbitXzqhIds)
                && ObjectUtil.isEmpty(correctConfigId)
                && ObjectUtil.isEmpty(correctOriginalPosition)
                && ObjectUtil.isEmpty(correctReportPosition)
                && ObjectUtil.isEmpty(correctPosition)
                && ObjectUtil.isEmpty(trackCheckReportPosition)
                ;
    }
}
